package com.xiangge.string;

import java.util.Arrays;

/**
 * @author xiangge
 * @version 1.0
 * @date 2025/4/14 15:22
 * @description
 *       String类查找方法:
 *           2.3.1 获取字符串长度  length()
 *           2.3.2 获取指定索引位置的单个字符 charAt(int index)
     *          int indexOf(int ch)	从前往后查找字符ch第一次出现在字符串中的索引位置,没有查到返回 -1
     *          int indexOf(int ch, int fromIndex)	返回指定字符第一次出现在字符串内的索引，以指定的索引开始搜索。
     *          int indexOf(String str)	返回指定子字符串第一次出现在字符串内的索引。
     *          int indexOf(String str, int fromIndex)	返回指定子串的第一次出现在字符串中的索引，从指定的索引开始搜索。
 *
 *               说明： indexOf() 从前往后开始查 , lastIndexOf() 从后往前查
 *           2.3.4 判断字符串是否以指定内容开头 startsWith(String str)
 *           2.3.5 判断字符串是否以指定内容结尾 endsWith(String str)
 *           2.3.6 判断字符串是否包含指定内容 contains(String str)
 *
 *       String 类转换方法:、
 *           字符串转字符数组：toCharArray()
 *           字符串转字节数组：getBytes()
 *           切割字符串： split(String regex)
 *           大小写转换：toLowerCase()、toUpperCase()
 *           取出空格：trim()
 *           字符串截取 ：substring(int beginIndex)、substring(int beginIndex, int endIndex)
 *           字符串拼接：concat(String str)
 *
 *           String replace(char oldChar, char newChar)	通过用newChar字符替换字符串中出现的所有oldChar字符，并返回替换后的新字符串。
 *           String replace(CharSequence target, CharSequence replacement)	将与字面目标序列匹配的字符串的每个子字符串替换为指定的字面替换序列。
 *
 *        String 类的其它方法：
 *           2.5.1isEmpty方法: 判断字符串是否为空字符串
 *           boolean equals(Object anObject)	判断字符串内容是否相同
 *           boolean equalsIgnoreCase(String anotherString)	判断字符串内容是否相同，忽略字母大小写。
 *           int compareTo(String anotherString)	比较两个字符串的大小。
 *                  str4.compareTo(str5)：
 *                        结果 > 0 , 说明：str4 大于 str5
 *                        结果 < 0 , 说明：str4 小于 str5
 *                        结果 == 0 , 说明：str4 等于 str5
 *           int compareToIgnoreCase(String str)	比较两个字符串的大小，忽略字母大小写。
 *           2.5.4valueOf方法 : 将其他类型的数据转为String类型

 *
 *
 */
public class StringDemo2 {
    public static void main(String[] args) {
        String str1 = "";
        System.out.println("str1.isEmpty() = " + str1.isEmpty()); // str1.isEmpty() = false
        System.out.println("====================================");
        String str2 = "hello";
        String str3 = new String("Hello");
        boolean equals = str2.equals(str3);
        System.out.println("equals = " + equals);

        boolean b = str2.equalsIgnoreCase(str3);
        System.out.println("b = " + b);
        System.out.println("====================================");
        String str4 = "abDdefg";
        String str5 = "abCdefg";
        int result = str4.compareTo(str5);// 从前往后一个字符一个字符的比较, 区分了大小关系就不比,没有区分就继续比下一位
        System.out.println("result = " + result); // 32

        String s = String.valueOf(10);
        System.out.println("s = " + s);

    }
    public static void main2(String[] args) {
        String str1 = "hello";
        char[] chars = str1.toCharArray();
        System.out.println(Arrays.toString(chars)); // [h, e, l, l, o]

        byte[] bytes = str1.getBytes();
        System.out.println(Arrays.toString(bytes)); // [104, 101, 108, 108, 111]
        System.out.println("======================");
        String str2 = "a-b-c-def";
        String[] split = str2.split("-");
        System.out.println(Arrays.toString(split)); // [a, b, c, def]
        System.out.println("======================");

        String str3 = "   hello   ";
        String trim = str3.trim();
        System.out.println("trim = " + trim); // trim = hello

        String upp = trim.toUpperCase();
        System.out.println("upp = " + upp); // upp = HELLO

        String lowerCase = upp.toLowerCase();
        System.out.println("lowerCase = " + lowerCase); // lowerCase = hello

        System.out.println("======================");
        String str4 = "abc123oerhgr9ugh8geho-rjh";
        String substring = str4.substring(str4.lastIndexOf('r'));
        System.out.println("substring = " + substring); // substring = rjh

        String substring1 = str4.substring(3, 6);
        System.out.println("substring1 = " + substring1); // substring1 = 123

        String concat = str4.concat("abc"); // "abc123oerhgr9ugh8geho-rjh" + "abc"
        System.out.println("concat = " + concat);
    }
    public static void main1(String[] args) {
        String str1 = "hello";
        int length = str1.length();
        System.out.println("length = " + length); // 5

        char c = str1.charAt(1);
        System.out.println("c = " + c); // 'e'
        System.out.println("======================");

        String str2 = "abcdefgabcde";
        int index1 = str2.indexOf('0');
        System.out.println("index1 = " + index1); // 2
        System.out.println("======================");
        int index2 = str2.indexOf('c', 3);
        System.out.println("index2 = " + index2); // 9

        int index3 = str2.indexOf("abc");
        System.out.println("index3 = " + index3);// index3 = 0

        System.out.println("======================");
        String str3 = "abcdefgabcde";
        int d = str3.lastIndexOf('d');
        System.out.println("d = " + d);// d = 10

        int d1 = str3.lastIndexOf('d', 6);
        System.out.println("d1 = " + d1);// d1 = 3

        System.out.println("======================");
        int abc = str3.lastIndexOf("abc");
        System.out.println("abc = " + abc);//abc = 7

        System.out.println("======================");
        String str4 = "hello";
        boolean flag1 = str4.startsWith("he");
        System.out.println("flag1 = " + flag1);
        boolean flag2 = str4.endsWith("lo");
        System.out.println("flag2 = " + flag2);
        boolean flag3 = str4.contains("el");
        System.out.println("flag3 = " + flag3);

    }
}
